1. Field of the Invention
This invention is related to the field of coherent memory systems and, more particularly, to ensuring global visibility of operations in a coherent memory system.
2. Description of the Related Art
Memory systems (including main memory and any caches in the system) are often designed to be coherent. That is, even though multiple copies of data from a given memory location may exist in the memory system, a read of that memory location returns the most recent data written to that memory location. The most recent data written to that memory location may be determined via an order of accesses to the memory location established according to the coherency mechanism. Typically, a coherent system may include one or more coherent agents and a memory controller coupled via an interconnect of some kind.
One mechanism for scaling coherent systems to larger numbers of coherent agents is a distributed memory system. In such a system, memory is distributed among various nodes (which may also include coherent agents), and the nodes are interconnected. A coherent agent in one node may access memory in another node. One class of techniques for maintaining coherency in a distributed memory system is referred to as cache-coherent, nonuniform memory access (CC-NUMA). In a CC-NUMA system, access to memory may have a varying latency (e.g. memory in the same node as an agent may be accessed more rapidly than memory in another node, and accesses to different nodes may have varying latencies as well), but coherency is maintained. Data from another node may be cached in a given node.
When an agent in a node accesses memory in that node, that node may need to communicate with other nodes to maintain coherency. For example, if the agent attempts to gain exclusive access to a block of memory, and other nodes have shared copies of the block, the other nodes may need to invalidate the block. If the agent is gaining exclusive access to update the block, the updates should not occur until the access is globally visible to the other nodes (so that the other nodes do not permit access to the shared copies that are not up to date with the updates made by the agent). A mechanism for ensuring global visibility is thus needed.